﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Data;
using System.Text.RegularExpressions;
using Bussiness;

namespace hostal
{
    public partial class RegistrarSalida : Form
    {

        DataTable dataTableTemporal = new DataTable();
        DataTable temp = new DataTable();
        string numeroHabitacion;
        string fechaLlegada;
        manejadorFechas fechas = new manejadorFechas();

        public RegistrarSalida()
        {
            InitializeComponent();
            habitacionDataAccess habitaciones = new habitacionDataAccess();
            dataTableTemporal = habitaciones.buscarHabitaciones();
            dg.DataSource = dataTableTemporal;
            for (int i = 0; i < dg.RowCount; i++)
            {
                CBHabitaciones.Items.Add(dg.Rows[i].Cells["numero"].Value);
            }
            DGConsumo.Columns.Add("nombre", "producto");
            DGConsumo.Columns.Add("precio", "precio");
            DGConsumo.Columns.Add("cantidad", "cantidad");
        }

        private void BTCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void BTAceptar_Click(object sender, EventArgs e)
        {
            try
            {
                if (CBTipoBusqueda.Text == "Numero Habitacion")
                {
                    if (CBHabitaciones.Text.Length > 0 && DGHospedaje.Rows.Count > 0)
                    {
                        ConfirmarSalida verhospedaje = new ConfirmarSalida(CBHabitaciones.Text, DGHospedaje.RowCount.ToString(), dataTableTemporal);
                        verhospedaje.ShowDialog();
                    }
                }
                if (CBTipoBusqueda.Text == "Nombre y Apellido")
                {
                    HospedajeDataAccess verInformacion = new HospedajeDataAccess();
                    try
                    {
                        int fila = DGHospedaje.CurrentRow.Index;
                        string numeroDocumento = DGHospedaje.Rows[fila].Cells["numeroDocumento"].Value.ToString();
                        string fechaLlegada = DGHospedaje.Rows[fila].Cells["fechaLlegada"].Value.ToString();
                        string fechaRegistro = DGHospedaje.Rows[fila].Cells["fechaRegistro"].Value.ToString();
                        string fechaSalida = DGHospedaje.Rows[fila].Cells["fechaSalida"].Value.ToString();
                        string numeroHabitacion = DGHospedaje.Rows[fila].Cells["numeroHabitacion"].Value.ToString();

                        ConfirmarSalidaPersona verDetallePersonal = new ConfirmarSalidaPersona(numeroDocumento, fechaLlegada, fechaSalida, fechaRegistro, numeroHabitacion);
                        verDetallePersonal.ShowDialog();

                        TBBuscarHospedaje_Click(sender, e);

                        bool existe = false;
                        for (int i = 0; i < DGHospedaje.Rows.Count; i++)
                        {
                            if (DGHospedaje.Rows[i].Cells["numeroHabitacion"].Value.ToString() == numeroHabitacion)
                                existe = true;
                        }
                        if (!existe)
                        {
                            LimpiezaDataAccess limpieza = new LimpiezaDataAccess();
                            limpieza.actualizarTotal(numeroHabitacion, fechaRegistro);
                        }
                            
                    }
                    catch (SystemException exeption) { }
                }
            }
            catch (Exception exp) { }
            TBBuscarHospedaje_Click(sender, e);
        }

        private void TBBuscarHospedaje_Click(object sender, EventArgs e)
        {
            try
            {
                if (CBTipoBusqueda.Text == "Numero Habitacion")
                {
                    DGConsumo.Rows.Clear();
                    HospedajeDataAccess buscarDataAccess = new HospedajeDataAccess();
                    dataTableTemporal = buscarDataAccess.buscarHospedaje(CBHabitaciones.Text);
                    DGHospedaje.DataSource = dataTableTemporal;

                    ConsumoDataAccess dal = new ConsumoDataAccess();
                    temp = dal.buscarConsumo(CBHabitaciones.Text);
                    for (int i = 0; i < temp.Rows.Count; i++)
                    {
                        DGConsumo.Rows.Add(temp.Rows[i]["nombre"].ToString(), temp.Rows[i]["precio"].ToString(), temp.Rows[i]["cantidad"].ToString());
                    }
                    label3.Text = dal.total(CBHabitaciones.Text) + " Bs.";
                }
                if (CBTipoBusqueda.Text == "Nombre y Apellido")
                {
                    DGConsumo.Rows.Clear();
                    HospedajeDataAccess buscarDataAccess = new HospedajeDataAccess();
                    TBNombreReserva.Text = Regex.Replace(TBNombreReserva.Text, @"\s+", " ").Trim();
                    string nombre = TBNombreReserva.Text;
                    dataTableTemporal = buscarDataAccess.buscarHospedajeNombre(TBNombreReserva.Text);
                    DGHospedaje.DataSource = dataTableTemporal;

                    ConsumoDataAccess dal = new ConsumoDataAccess();
                    temp = dal.buscarConsumo(DGHospedaje.CurrentRow.Cells["numeroHabitacion"].Value.ToString());
                    for (int i = 0; i < temp.Rows.Count; i++)
                    {
                        DGConsumo.Rows.Add(temp.Rows[i]["nombre"].ToString(), temp.Rows[i]["precio"].ToString(), temp.Rows[i]["cantidad"].ToString());
                    }
                    label3.Text = dal.total(DGHospedaje.CurrentRow.Cells["numeroHabitacion"].Value.ToString())+ " Bs.";
                }
            }
            catch (Exception exp) { }
        }

        private void CBHabitaciones_SelectedValueChanged(object sender, EventArgs e)
        {
            TBBuscarHospedaje_Click(sender, e);
        }

        private void CBHabitaciones_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void CBTipoBusqueda_SelectedValueChanged(object sender, EventArgs e)
        {
            if (CBTipoBusqueda.Text == "Numero Habitacion")
            {
                CBHabitaciones.Show();
                TBNombreReserva.Hide();
            }
            if (CBTipoBusqueda.Text == "Nombre y Apellido")
            {
                CBHabitaciones.Hide();
                TBNombreReserva.Show();
            }
            TBBuscarHospedaje_Click(sender, e);
        }

        private void CBTipoBusqueda_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;            
        }

        private void RegistrarSalida_Load(object sender, EventArgs e)
        {

        }

        private void DGHospedaje_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                DGConsumo.Rows.Clear();
                ConsumoDataAccess dal = new ConsumoDataAccess();
                temp = dal.buscarConsumo(DGHospedaje.CurrentRow.Cells["numeroHabitacion"].Value.ToString());
                for (int i = 0; i < temp.Rows.Count; i++)
                {
                    DGConsumo.Rows.Add(temp.Rows[i]["nombre"].ToString(), temp.Rows[i]["precio"].ToString(), temp.Rows[i]["cantidad"].ToString());
                }
                label3.Text = dal.total(DGHospedaje.CurrentRow.Cells["numeroHabitacion"].Value.ToString()) + " Bs.";
            }
            catch (Exception exp) { }
        }
    }
}
